#include <iostream>
using namespace std;
#include <stack>
const int N = 5e5 + 5;
int a[N];

//求每个数前面第一个出现比他小的数
int n;
stack<int> st;
void m_stack()
{
	for (int i = 0; i < n; i++)
	{
		int x = a[i];
		while (!st.empty() && x < st.top())
			st.pop();
		int cur = st.empty() ? -1 : st.top();
		cout << cur << " ";
		st.push(x);
	}
}
int main()
{
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i];
	
	m_stack();
	return 0;
}

/*
8 
1 3 4 0 5 7 6 8
*/